package com.jmyd.commons.enums;

import com.jmyd.commons.base.vo.LabelStringKeyVo;
import lombok.Getter;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @author samphin
 * @date 2021/5/19 8:53
 */
public enum ApiDocPackageEnum {

    /**
     * VR带看接口文档
     */
    API_VR_LOOK("API_VR_LOOK", "com.jmyd.scene.api.imserver"),

    /**
     * 官网首页
     */
    API_INDEX("API_INDEX", "com.jmyd.scene.api.index"),

    /**
     * 支付
     */
    API_PAY("API_PAY", "com.jmyd.scene.api.pay"),

    /**
     * 开放平台
     */
    API_PLATFORM("API_PLATFORM", "com.jmyd.scene.api.platform"),

    /**
     * 官网模板接口文档
     */
    API_SCENE("API_SCENE", "com.jmyd.scene.api.scene"),

    /**
     * 官网展厅接口文档
     */
    API_TEMPLATE("API_TEMPLATE", "com.jmyd.scene.api.template"),

    /**
     * 官网帐号接口文档
     */
    API_WEB("API_WEB", "com.jmyd.scene.api.web"),

    /**
     * 官网微信相关接口文档
     */
    API_WECHAT("API_WECHAT", "com.jmyd.scene.api.wechat"),

    //====================================管理后台接口文档========================================
    /**
     * 管理后台公共接口
     */
    API_ADMIN_COMMON("API_ADMIN_COMMON","com.jmyd.scene.admin.api.common"),

    /**
     * 管理后台mtool相关接口文档
     */
    API_ADMIN_MTOOL("API_ADMIN_MTOOL","com.jmyd.scene.admin.api.mtool"),

    /**
     * 管理后台运营位相关接口文档
     */
    API_ADMIN_OPERATION("API_ADMIN_OPERATION","com.jmyd.scene.admin.api.operation"),

    /**
     * 管理后台消费记录、充值记录相关接口文档
     */
    API_ADMIN_ORDER("API_ADMIN_ORDER","com.jmyd.scene.admin.api.order"),

    /**
     * 管理后台开放平台相关接口文档
     */
    API_ADMIN_PLATFORM("API_ADMIN_PLATFORM","com.jmyd.scene.admin.api.platform"),

    /**
     * 管理后台模板管理相关接口文档
     */
    API_ADMIN_SCENE("API_ADMIN_SCENE","com.jmyd.scene.admin.api.scene"),

    /**
     * 管理后台用户角色权限相关接口文档
     */
    API_ADMIN_SYSTEM("API_ADMIN_SYSTEM","com.jmyd.scene.admin.api.system"),

    /**
     * 管理后台展厅管理相关接口文档
     */
    API_ADMIN_TEMPLATE("API_ADMIN_TEMPLATE","com.jmyd.scene.admin.api.template"),

    /**
     * 管理后台前端用户管理相关接口文档
     */
    API_ADMIN_WEB("API_ADMIN_WEB","com.jmyd.scene.admin.api.web"),

    ;

    @Getter
    private String type;

    @Getter
    private String desc;

    ApiDocPackageEnum(String name, String desc) {
        this.type = name;
        this.desc = desc;
    }

    public static List<LabelStringKeyVo> queryList() {
        return Arrays.stream(ApiDocPackageEnum.values())
                .map(enums -> {
                    LabelStringKeyVo vo = new LabelStringKeyVo();
                    vo.setKey(enums.getType());
                    vo.setValue(enums.getDesc());
                    return vo;
                }).collect(Collectors.toList());
    }

    public static List<String> queryPackages() {
        return Arrays.stream(ApiDocPackageEnum.values())
                .map(ApiDocPackageEnum::getDesc).collect(Collectors.toList());
    }
}
